#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@file logger.py
@author weiximei
@date 2025/3/6 14:30
"""
import logging
import os
from logging.handlers import RotatingFileHandler

from flask import Flask


def setup_logger(app: Flask, log_path: str = "logs"):
    """
    配置 Flask 应用的日志系统
    Args:
        app: Flask 应用实例
        log_path: 日志文件存储路径

    使用:
        from flask import current_app

        @app.route('/api/test')
        def test_api():
            current_app.logger.info('访问测试接口')
            return {'message': 'success'}
    """
    if not os.path.exists(log_path):
        os.makedirs(log_path)

    # 配置日志格式
    formatter = logging.Formatter(
        '[%(asctime)s] %(levelname)s in %(module)s: %(message)s'
    )

    # 创建文件处理器
    file_handler = RotatingFileHandler(
        os.path.join(log_path, 'flask-app.log'),
        maxBytes=10 * 1024 * 1024,  # 10MB
        backupCount=10,
        encoding='utf-8'
    )
    file_handler.setFormatter(formatter)
    file_handler.setLevel(logging.INFO)

    # 添加到应用日志记录器
    app.logger.addHandler(file_handler)
    app.logger.setLevel(logging.INFO)

    # 同时将日志输出到控制台
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(formatter)
    app.logger.addHandler(console_handler)
